import axios from 'axios'
import qs from 'qs'
axios.defaults.withCredentials = true;

let util = {}

util.title = function(title) {
    window.document.title = title
}

util.axiosFun = function({ url, method, params, data, lable = true, openWindow = false }) {
    return new Promise((resolve, reject) => {
        let getData = params || data
        if (openWindow) {
            getData = qs.stringify(getData, { arrayFormat: 'comma' });
            window.open(getData ? `${url}?${getData}` : `${url}`, '_self');
        } else if (method === 'get') {
            getData = qs.stringify(getData, { arrayFormat: 'comma' });
            util.ajax.get(getData ? `${url}?${getData}` : `${url}`, {
                responseType: 'blob'
            }).then(res => {
                resolve(res);
            }).catch(error => {
                reject(error)
            });
        } else {
            util.ajax({ url, method, params, data }).then(res => resolve(res)).catch(error => {
                reject(error)
            });
        }
    });
};

util.ajax = axios.create({
    baseURL: 'http://127.0.0.1:8000/v2/',
    // baseURL: 'https://www.teemor.xyz/api/',
    withCredentials: false,
    timeout: 10000,
})

// request拦截器
util.ajax.interceptors.request.use(config => {
    let token = localStorage.getItem("AUTHTOKEN");
    if(token) {
        config.headers.AUTH = token;
    }

    return config
}, error => {
    // Do something with request error
    // console.log('rejecterror',error)
    Promise.reject(error)
})


// 添加响应拦截器 如果响应遇到错误 则跳转
util.ajax.interceptors.response.use(function(response) {
    // debugger;
    if (response.data.code && response.data.code !== 200) {
        let msg = response.data.msg
        util.vm.$layer.msg(msg);
    }
    return response.data;
}, function(error) {
    try {
        /*util.vm.$Modal.remove() //关闭弹窗*/
        if (error.response.status === 400) {
            /* util.vm.$Message.error(error.response.data.message)*/
            //alert(error.response.data.message)
        }
        if (error.response.status === 401) {
            //跳转到登陆页面
            //window.location.href = process.env.LOGIN_URL + '/login?redirect=' + window.location.href
        }
        if (error.response.status === 403) {
            //弹出错误提示 这里不能用返回 防止是modal框时返回了上一页
            /* util.vm.$Message.error('权限不足')*/
            util.vm.$layer.confirm('访问权限不足，是否去登录', {
                // icon: 3,
                title: "权限不足",
                btn: ['要得','不去'] //按钮
              }, function(){
                window.location.href = "/user/login";
              }, function(index){
                util.vm.$layer.close(index);
              });
        }
        if (error.response.status === 405) {
            //弹出错误提示 这里不能用返回 防止是modal框时返回了上一页
            /* util.vm.$Message.error('请求资源错误，请联系管理员报告此错误 <br /> message:' + error.response.data.message)*/
            alert('请求资源错误，请联系管理员报告此错误 <br /> message:' + error.response.data.message)
        }
        if (error.response.status === 422) {
            alert('请求格式正确，但是由于含有语义错误，无法响应')
        }
        /*    if (error.response.status_code === 422) {
              console.log()
                util.vm.$Message.error(error.response.data.message)
            }*/
        if (error.response.status === 500) {
            //弹出错误提示
            util.vm.$message.error('服务器内部错误，请稍后再试 ')
                /* alert('服务器内部错误，请稍后再试 ')*/
        }
        if (error.response.status === 504) {
            //弹出错误提示
            util.vm.$layer.msg('服务器响应超时，请稍后再试 ')
                /* alert('服务器内部错误，请稍后再试 ')*/
        }

    } catch (err) {
        // console.log('err',err)
    }
    return Promise.reject(error)
})

util.vm = function(vm) {
    this.vm = vm
}
export default util